//
//  UITextView+extension.swift
//  weiBo
//
//  Created by helong on 16/7/21.
//  Copyright © 2016年 helong. All rights reserved.
//

import UIKit

extension UITextView {
     // MARK: -  将用户输入的显示在文本框中
    func inputMethod(emotion: HREmotion) {
    
    let originAttributeString = NSMutableAttributedString(attributedString: self.attributedText)
    //  如果是图片
    if (emotion.type)! == "0" {
    
//    //  根据按钮的内容转换成富文本
//    let image = UIImage(named: (emotion.absolutePathForPNG)!)
//    let textAttachment = HRTextAttachment()
//    textAttachment.image = image
//        //  给自定义的textattachment赋值
//        textAttachment.emotion = emotion
//    //  将文本附件转化成富文本
//    let attributeStr = NSAttributedString(attachment: textAttachment)
    let attributeStr = HREmotionManager.manager.generateAttributeStringWithEmotion(15, emotion: emotion)
    //  拼接富文本
    //            originAttributeString.appendAttributedString(attributeStr)
    
    //  获取选中的range
    var range = self.selectedRange
    //  将选中的range内容替换成图片
    originAttributeString.replaceCharactersInRange(range, withAttributedString: attributeStr)
    //  显示富文本
    self.attributedText = originAttributeString
    //  将选中的光标移动到替换之后
    range.length = 0
    range.location += 1
    self.selectedRange = range
    
    }else {//   如果是emoji
    //  将code转化成emoji并插入到textView
    let emoji = ((emotion.code)! as NSString).emoji()
    self.insertText(emoji)
    }
    
    //  发送文本改变的通知
    NSNotificationCenter.defaultCenter().postNotificationName(UITextViewTextDidChangeNotification, object: nil)
    //  通过代理调用文本框内容发生改变的方法
    self.delegate?.textViewDidChange!(self)

}
     // MARK: - 把用户输入的表情图片替换成表情描述
    func stringFromAttributedString() -> String {
        
        var result = ""
        //  获取富文本中的图片对应的chs
        //  根据指定的范围,遍历我们的富文本
        //  infoDic - 表示遍历到内容
        //  range  - 表示遍历到范围
        //  stop   - 是否停止      a.memory = true
        self.attributedText.enumerateAttributesInRange(NSMakeRange(0, self.attributedText.length), options: []) { (infoDict, range, _) -> Void in
            print(infoDict)
            //  根据键找到文本附件
            if let attributeStr = infoDict["NSAttachment"] as? HRTextAttachment {
                //  根据文本附件找到chs
                let chs = attributeStr.emotion!.chs!
                
                result += chs
            }else {
                //  如果是文本
                let text = self.attributedText.attributedSubstringFromRange(range).string
                result += text
            }
            
        }
        return result
    }
     // MARK: - 根据chs获得表情模型
//    func queryEmotionWithChs(chs: String) -> HREmotion {
//        
//    }
}
